package com.njtech.pet.service.impl;
import com.njtech.pet.dao.ItemDao;
import com.njtech.pet.entity.Item;
import com.njtech.pet.service.ItemService;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @author ：Hana
 * @date ：Created in 2020/3/22 22:23
 * @description：ItemService实现
 * @modified By：
 * @version: 1.0$
 */

@Service
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public class ItemServiceImpl implements ItemService {
    @Autowired
    private ItemDao itemDao;


    /**
     * 查找所有保险类型
     *
     * @return List<String>
     */
    @Override
    public List<String> selectAllType() {
        return itemDao.selectAllType();
    }

    /**
     * 查找所有被保对象
     *
     * @return List<String>
     */
    @Override
    public List<String> selectAllSubject() {
        return itemDao.selectAllSubject();
    }

    /**
     * 选择
     *
     * @param item       封装了id, type,subject内容，会根据是否为空添加对应查找语句
     * @param upper      价格的上限
     * @param lower      价格的下限
     * @param states     状态集合，可能根据多种状态显示
     * @param beginDate  起日期
     * @param endDate    止日期
     * @param orderState 是否升序排列
     * @return 物品集合
     */
    @Override
    public List<Item> selectElastically(@Param("item") Item item, @Param("upper") Integer upper, @Param("lower") Integer lower, @Param("states") List<String> states, @Param("beginDate") String beginDate, @Param("endDate") String endDate, @Param("orderState") String orderState) {
        return itemDao.selectElastically(item,upper,lower,states,beginDate,endDate,orderState);
    }

    /**
     * 插入
     *
     * @param item 记录
     * @return 行数
     */
    @Override
    public int insert(Item item) {
        return itemDao.insert(item);
    }

    /**
     * 修改
     *
     * @param item 新的记录
     * @return 行数
     */
    @Override
    public int updateByItemId(Item item) {
        return itemDao.updateByItemId(item);
    }

    /**
     * 根据id查询
     *
     * @param id 输入id
     * @return 返回结果
     */
    @Override
    public Item selectById(@Param("id") Integer id) {
        return itemDao.selectById(id);
    }
}
